#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>


#define LOG "log.txt"

int main()
{
  //我们还需要设置一下权限掩码,不然权限不能符合我们的预期
  umask(0);

  //int fd=open(LOG,O_WRONLY | O_CREAT,0666);
  //int fd=open(LOG,O_WRONLY | O_CREAT | O_TRUNC,0666);
  // int fd=open(LOG,O_WRONLY | O_CREAT | O_APPEND,0666);
  int fd=open(LOG,O_RDONLY);
  //我们打印一下返回值和错误码，还有错误码对应的文字描述
  printf("fd:%d,errno:%d,errnostring:%s\n",fd,errno,strerror(errno));
  
  char buffer[1024];

  ssize_t n=read(fd,buffer,sizeof(buffer)-1);//使用系统接口来进行IO的时候，一定要注意\0的问题
  if(n>0)
  {
    buffer[n]='\0';

    printf("%s\n",buffer);
  }
  
  //const char*msg="hello world,hello Linux";
//  const char*msg="aaaaaaaaaa";
//  int cnt=1;
//  while(cnt)
//  {
//    char line[128];
//    snprintf(line,sizeof(line),"%s,%d\n",msg,cnt);
//
//    //文件写入时，最好不要将\0写入文件，因为\0是C语言的，文件不认识
//    //\0在文件中解释出来会变成乱码
//    write(fd,line,strlen(line));
//    cnt--;
//  }
//


  close(fd);
  return 0;
}

















//#define ONE 0x1
//#define TWO 0x2
//#define THREE 0x4
//#define FOUR 0x8
//#define FIVE 0x10
//
//
//void Print(int flags)
//{
//  if(flags & ONE) printf("hello 1\n");
//  if(flags & TWO) printf("hello 2\n");
//  if(flags & THREE) printf("hello 3\n");
//  if(flags & FOUR) printf("hello 4\n");
//  if(flags & FIVE) printf("hello 5\n");
//}
//
//int main()
//{
//  printf("-------------------------------\n");
//  Print(ONE);
//
//  printf("-------------------------------\n");
//  Print(TWO);
//
//  printf("-------------------------------\n");
//  Print(FOUR);
//
//  printf("-------------------------------\n");
//  Print(ONE|TWO);
//
//  printf("-------------------------------\n");
//  Print(ONE|TWO|THREE);
//
//  printf("-------------------------------\n");
//  Print(ONE|TWO|THREE|FOUR|FIVE);
//
//  printf("-------------------------------\n");
//  return 0;
//}
